package com.xxxtea.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.xxxtea.mpe.annotation.Constraint;
import com.xxxtea.mpe.annotation.ExtendQuery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;

/**
 * 搜索记录实体类
 *
 * 用于存储用户的搜索历史信息，包括：
 * - 搜索基本信息（关键词、搜索时间等）
 * - 用户搜索行为记录
 * - 热门搜索统计支持
 *
 * 使用MyBatis-Plus注解进行数据库映射
 * 使用Swagger注解进行API文档生成
 *
 * @author badman
 * @since 1.0.0
 */
@Data
@ApiModel("搜索记录")
@TableName(autoResultMap = true)
public class SearchHistory {

	/**
	 * 主键ID
	 * 使用自增策略
	 */
	@ApiModelProperty("主键")
	@TableId(value = "id", type = IdType.AUTO)
	private Integer id;

	/**
	 * 用户ID
	 * 搜索用户，自动填充当前用户ID
	 * 关联User表
	 */
	@ApiModelProperty("用户ID")
	@TableField(fill = FieldFill.INSERT)
	@Constraint(referenceClass = User.class)
	private Integer userId;

	/**
	 * 搜索关键词
	 * 用户搜索的关键词
	 */
	@ApiModelProperty("关键词")
	private String keyword;

	/**
	 * 最后搜索时间
	 * 自动填充插入和更新时间
	 */
	@ApiModelProperty("最后搜索时间")
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private Date updateTime;

	/**
	 * 用户昵称
	 * 非数据库字段，扩展查询字段，关联用户表获取昵称
	 */
	@TableField(exist = false)
	@ExtendQuery(referenceClass = User.class, targetColumn = "nickname")
	private String userName;
}